// #include "c1.h"
// #include "mytime.h"
// typedef int ElemType;

// //#define Sq //使用SqList数据结构
// #ifdef Sq
//     #include "c2-1.h"
//     #include "bo2-1.h"
//     typedef SqList List;
//     #define printer print1
// #else
//     #include "c2-2.h"
//     #include "bo2-2.h"
//     typedef LinkList List;
//     #define printer print
// #endif

// #include "func2-2.h"
// #include "func2-1.h"

// TEST(algo2_1, demo1)
// {
//     LOG(INFO) << "\n-----开始测试算法2.1测试其正确性！-----";
//     List La, Lb, Lc;
//     int j , b[7]={2,6,8,9,11,15,20}, a[4]={3,5,8,11},number;
//     InitList(La);
//     for(j = 1; j<=5; j++)
//         ListInsert(La, j, j);
//     printf("La=");
//     ListTraverse(La, printer);
//     InitList(Lb);
//     for(j = 1; j<=5; j++)
//     {
//         number = j*2;
//         ListInsert(Lb, j, number);
//     }
//     printf("Lb=");
//     ListTraverse(Lb, printer);
//     Union(La,Lb);
//     printf("新的La=");
//     ListTraverse(La, printer);

//     LOG(INFO) << "\n-----开始测试算法2.2测试其正确性！-----";
//     ClearList(Lb);
//     ClearList(La);
//     for(j = 1; j<=4; j++)
//         ListInsert(La, j, a[j-1]);
//     for(j = 1; j<=7; j++)
//         ListInsert(Lb, j, b[j-1]);
//     printf("La=");
//     ListTraverse(La, printer);
//     printf("Lb=");
//     ListTraverse(Lb, printer);
//     MergerList(La, Lb, Lc);
//     printf("Lc=");
//     ListTraverse(Lc, printer);  

// }

// TEST(algo2_1, demo_large)
// {
//     LOG(INFO) << "\n-----开始以大样本测试算法2.1！-----";
//     my_timer timer;
//     List La, Lb, Lc;
//     int large_number = 10000;
//     int j , b[large_number], a[large_number],number;

//     //初始化a b数组
//     timer.start();
//     for(int i = 0; i<large_number; i++)
//     {
//         a[i] = i;
//         b[i] = i * 2;
//     }
//     timer.stop();
//     LOG(INFO) << "初始化a b数组，耗时: "<<timer.time_use/1000<<"(ms)";

//     //初始化La
//     timer.start();
//     InitList(La);
//     for(j = 1; j<=large_number; j++)
//         ListInsert(La, 1, j);
//     //printf("La=");
//     //ListTraverse(La, printer);

//     //初始化Lb
//     InitList(Lb);
//     for(j = 1; j<=large_number; j++)
//     {
//         number = j*2;
//         ListInsert(Lb, 1, number);
//     }
//     timer.stop();
//     LOG(INFO) << "初始化La和Lb向其中插入元素耗时: "<<timer.time_use/1000<<"(ms)";
//     //printf("Lb=");
//     //ListTraverse(Lb, printer);
//     timer.start();
//     Union(La,Lb);
//     timer.stop();
//     LOG(INFO) << "Union(La,Lb) 耗时: "<<timer.time_use/1000<<"(ms)";
//     //printf("新的La=");
//     //ListTraverse(La, printer);

//     LOG(INFO) << "\n-----开始以大样本测试算法2.2！-----";
//     timer.start();
//     ClearList(La);
//     ClearList(Lb);
//     timer.stop();
//     LOG(INFO) << "清空La和Lb 耗时: "<<timer.time_use/1000<<"(ms)";
    
//     timer.start();
//     for(j = 1; j<=large_number; j++)
//         ListInsert(La, 1, a[j-1]);
//     for(j = 1; j<=large_number; j++)
//         ListInsert(Lb, 1, b[j-1]);
//     timer.stop();
//     LOG(INFO) << "向La和Lb中插入元素 耗时: "<<timer.time_use/1000<<"(ms)";
//     //printf("La=");
//     //ListTraverse(La, printer);
//     //printf("Lb=");
//     //ListTraverse(Lb, printer);
//     timer.start();
//     MergerList(La, Lb, Lc);
//     timer.stop();
//     LOG(INFO) << "MergerList(La, Lb, Lc) 耗时: "<<timer.time_use/1000<<"(ms)";
//     //printf("Lc=");
//     //ListTraverse(Lc, printer);  
//     timer.start();
//     DestroyList(La);
//     DestroyList(Lb);
//     DestroyList(Lc);
//     timer.stop();
//     LOG(INFO) << "销毁La Lb Lc 耗时: "<<timer.time_use/1000<<"(ms)";
// }